Critical systems often require high levels of fault tolerance. For example, flight computers in aircraft (which are responsible for controlling certain operations of an aircraft during flight) are required to be fault tolerant. If a fault does occur in a fault-tolerant critical system, the system will continue to operate properly due to the fault tolerance. In order to achieve the required levels of fault tolerance, many systems incorporate redundancy into the network. For example, in some systems multiple redundant flight computers are used so that if one flight computer fails, the other redundant flight computers are able to continue controlling operation of the aircraft.
It is often necessary for the redundant computers to communicate so that at least a majority of the redundant computers agree on the output sent to other system components. Communication between the redundant flight computers is achieved through cross channel data links (CCDL) in some systems. The CCDL enables each redundant computer to transmit to and receive messages from each of the other redundant computers. In this way, the CCDL can be used to ensure that bad data from elsewhere in the system does not propagate and become the majority input to the redundant computers. Thus, the use of a CCDL includes multiple exchanges of data between the redundant computers, comparison and voting of input data, and selection of a majority opinion. In addition, the CCDL is used to synchronize the time base between the redundant computers so that each redundant computer is executing the same application task substantially simultaneously.
Although, the multiple exchanges of data and synchronization of time base enable the redundant computers to achieve the necessary fault tolerance, the fault tolerance comes at the expense of computer performance. Each of the redundant computers has to process all the exchanged data, which places an additional burden on the redundant computers.